/*
 * Copyright 2008 Federal Emergency Management Agency
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 * 
 *    http://www.apache.org/licenses/LICENSE-2.0 
 *    
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and 
 * limitations under the License. 
 *  
 */
package gov.fema.hazus.bdc.client.services;

import gov.fema.hazus.bdc.client.common.BuildingQuery;
import gov.fema.hazus.bdc.shared.entity.Building;

import java.util.ArrayList;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;

public class BuildingServiceProxy {

    private static BuildingServiceProxy instance;
    private BuildingServiceAsync proxy;

    private BuildingServiceProxy()
    {
    	try {
    		proxy = (BuildingServiceAsync) GWT.create(BuildingService.class);
            ((ServiceDefTarget) proxy).setServiceEntryPoint(GWT.getModuleBaseURL() 
            		+ "gwt.rpc");
        		
		} catch (Exception e) {
			e.printStackTrace();
		}
    	
    }

    public static BuildingServiceProxy get()
    {
        if (instance == null) {
            instance = new BuildingServiceProxy();
        }
        return instance;
    }
    
	public void getBuilding(Building building, AsyncCallback callback) {
		proxy.getBuilding(building, callback);
	}     

	public void getBuildingEarthquakeResults(Building building, AsyncCallback callback) {
		proxy.getBuildingEarthquakeResults(building, callback);
	}     

    public void getBuildingLocations(AsyncCallback callback) {
        proxy.getBuildingLocations(callback);
    }
    
    public void getBuildings(AsyncCallback callback) {
        proxy.getBuildings(callback);
    } 
       
    
    public void find(BuildingQuery buildingQuery, AsyncCallback callback) {
        proxy.find(buildingQuery, callback);
    }

    public void saveBuilding(Building building, AsyncCallback callback) {
        proxy.save(building, callback);
    } 

    public void deleteBuildings(ArrayList buildings, AsyncCallback callback) {
        proxy.deleteBuildings(buildings, callback);
    }

    public void search(BuildingQuery query, AsyncCallback callback) {
        proxy.search(query, callback);
    }

    public void releaseBuilding(Building building, AsyncCallback callback) {
        proxy.releaseBuilding(building, callback);
    }
    
}
